/*     */ package dm.jdbc.xa;
/*     */ 
/*     */ import dm.jdbc.driver.DmdbCSI;
/*     */ import dm.jdbc.driver.DmdbConnection_bs;
/*     */ import java.sql.Connection;
/*     */ import java.util.ArrayList;
/*     */ import javax.transaction.xa.XAException;
/*     */ import javax.transaction.xa.Xid;
/*     */ 
/*     */ public class DmdbXAResource implements javax.transaction.xa.XAResource
/*     */ {
/*  12 */   public boolean recoverd = false;
/*     */   Connection conn;
/*     */   int m_timeout;
/*     */   Xid m_xid;
/*     */   
/*     */   public DmdbXAResource()
/*     */   {
/*  19 */     this.conn = null;
/*  20 */     this.m_timeout = 60;
/*     */   }
/*     */   
/*     */   public DmdbXAResource(Connection connection) {
/*  24 */     this.conn = connection;
/*  25 */     this.m_timeout = 60;
/*     */   }
/*     */   
/*     */   public Connection getConnection() {
/*  29 */     return this.conn;
/*     */   }
/*     */   
/*     */   public void setRecoverd(boolean recoverd) {
/*  33 */     this.recoverd = recoverd;
/*     */   }
/*     */   
/*     */   public void commit(Xid xid, boolean onePhase) throws XAException {
/*     */     int k;
/*     */     int k;
/*  39 */     if (onePhase) {
/*  40 */       k = 1073741824;
/*     */     } else {
/*  42 */       k = 0;
/*     */     }
/*  44 */     if (xid == null) {
/*  45 */       throw new XAException(-5);
/*     */     }
/*     */     try {
/*  48 */       DmdbCSI.xa_process((DmdbConnection_bs)this.conn, 1, 
/*  49 */         xid, k);
/*     */     } catch (XAException e) {
/*  51 */       throw e;
/*     */     }
/*     */     catch (Exception localException) {}
/*     */   }
/*     */   
/*     */   public void end(Xid xid, int flags) throws XAException
/*     */   {
/*  58 */     if (xid == null) {
/*  59 */       throw new XAException(-5);
/*     */     }
/*  61 */     if ((flags != 67108864) && (flags != 536870912) && (flags != 33554432)) {
/*  62 */       throw new XAException(-5);
/*     */     }
/*     */     try {
/*  65 */       DmdbCSI.xa_process((DmdbConnection_bs)this.conn, 2, 
/*  66 */         xid, flags);
/*     */     } catch (XAException e) {
/*  68 */       throw e;
/*     */     }
/*     */     catch (Exception localException) {}
/*     */   }
/*     */   
/*     */   public void forget(Xid xid) throws XAException
/*     */   {
/*  75 */     if (xid == null) {
/*  76 */       throw new XAException(-5);
/*     */     }
/*     */     try {
/*  79 */       DmdbCSI.xa_process((DmdbConnection_bs)this.conn, 3, 
/*  80 */         xid, 0);
/*     */     } catch (XAException e) {
/*  82 */       throw e;
/*     */     }
/*     */     catch (Exception localException) {}
/*     */   }
/*     */   
/*     */   public int getTransactionTimeout() throws XAException
/*     */   {
/*  89 */     return this.m_timeout;
/*     */   }
/*     */   
/*     */   public boolean isSameRM(javax.transaction.xa.XAResource xares) throws XAException {
/*  93 */     Connection connection = null;
/*  94 */     if ((xares instanceof DmdbXAResource)) {
/*  95 */       connection = ((DmdbXAResource)xares).getConnection();
/*     */     } else {
/*  97 */       return false;
/*     */     }
/*     */     
/* 100 */     if (connection == null) {
/* 101 */       return false;
/*     */     }
/* 103 */     String url = ((DmdbConnection_bs)connection).getURL();
/* 104 */     return (connection.equals(this.conn)) || 
/* 105 */       (url.equals(((DmdbConnection_bs)this.conn).getURL()));
/*     */   }
/*     */   
/*     */   public int prepare(Xid xid) throws XAException {
/* 109 */     int retcode = 0;
/*     */     
/* 111 */     if (xid == null) {
/* 112 */       throw new XAException(-5);
/*     */     }
/*     */     try {
/* 115 */       retcode = DmdbCSI.xa_process((DmdbConnection_bs)this.conn, 
/* 116 */         4, xid, 0);
/* 117 */       if ((retcode != 0) && (retcode != 3))
/* 118 */         throw new XAException();
/*     */     } catch (XAException e) {
/* 120 */       throw e;
/*     */     }
/*     */     catch (Exception localException) {}
/*     */     
/* 124 */     return retcode;
/*     */   }
/*     */   
/*     */   public Xid[] recover(int flag) throws XAException {
/* 128 */     ArrayList rec_xids = new ArrayList();
/* 129 */     Xid[] xids = null;
/* 130 */     Xid[] tmp = null;
/*     */     
/* 132 */     if ((flag != 16777216) && (flag != 8388608) && (flag != 0) && 
/* 133 */       (flag != 25165824)) {
/* 134 */       throw new XAException(-5);
/*     */     }
/*     */     
/*     */     try
/*     */     {
/* 139 */       this.recoverd = false;
/* 140 */       tmp = DmdbCSI.xa_recover(this, 16777216);
/* 141 */       if (this.recoverd) {
/* 142 */         return tmp;
/*     */       }
/* 144 */       for (int i = 0; i < tmp.length; i++) {
/* 145 */         rec_xids.add(tmp[i]);
/*     */       }
/*     */       do {
/* 148 */         tmp = DmdbCSI.xa_recover(this, 0);
/* 149 */         for (int i = 0; i < tmp.length; i++)
/* 150 */           rec_xids.add(tmp[i]);
/* 151 */       } while (!this.recoverd);
/*     */       
/*     */ 
/*     */ 
/* 155 */       xids = new Xid[rec_xids.size()];
/* 156 */       return (Xid[])rec_xids.toArray();
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */     }
/*     */     catch (XAException e)
/*     */     {
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/* 187 */       throw e;
/*     */     }
/*     */     catch (Exception localException) {}
/*     */     
/* 191 */     return xids;
/*     */   }
/*     */   
/*     */   public void rollback(Xid xid) throws XAException
/*     */   {
/* 196 */     if (xid == null) {
/* 197 */       throw new XAException(-5);
/*     */     }
/*     */     try {
/* 200 */       DmdbCSI.xa_process((DmdbConnection_bs)this.conn, 
/* 201 */         6, xid, 0);
/*     */     } catch (XAException e) {
/* 203 */       throw e;
/*     */     }
/*     */     catch (Exception localException) {}
/*     */   }
/*     */   
/*     */   public boolean setTransactionTimeout(int seconds) throws XAException
/*     */   {
/* 210 */     if (seconds < 0) {
/* 211 */       throw new XAException(-5);
/*     */     }
/* 213 */     this.m_timeout = seconds;
/* 214 */     return true;
/*     */   }
/*     */   
/*     */   public void start(Xid xid, int flags) throws XAException {
/* 218 */     if (xid == null)
/* 219 */       throw new XAException(-5);
/* 220 */     if ((flags != 0) && (flags != 2097152) && (flags != 134217728)) {
/* 221 */       throw new XAException(-5);
/*     */     }
/*     */     try {
/* 224 */       DmdbCSI.xa_process((DmdbConnection_bs)this.conn, 7, 
/* 225 */         xid, flags);
/*     */     } catch (XAException e) {
/* 227 */       throw e;
/*     */     }
/*     */     catch (Exception localException) {}
/*     */   }
/*     */   
/*     */   public void heurCommit(Xid xid) throws XAException
/*     */   {
/* 234 */     if (xid == null) {
/* 235 */       throw new XAException(-5);
/*     */     }
/*     */     try {
/* 238 */       DmdbCSI.xa_process((DmdbConnection_bs)this.conn, 8, 
/* 239 */         xid, 0);
/*     */     } catch (XAException e) {
/* 241 */       throw e;
/*     */     }
/*     */     catch (Exception localException) {}
/*     */   }
/*     */   
/*     */   public void heurRollback(Xid xid) throws XAException {
/* 247 */     if (xid == null) {
/* 248 */       throw new XAException(-5);
/*     */     }
/*     */     try {
/* 251 */       DmdbCSI.xa_process((DmdbConnection_bs)this.conn, 9, 
/* 252 */         xid, 0);
/*     */     } catch (XAException e) {
/* 254 */       throw e;
/*     */     }
/*     */     catch (Exception localException) {}
/*     */   }
/*     */ }


/* Location:              D:\Program Files\DBMS_20150813\jdbc\Dm7JdbcDriver17.jar!\dm\jdbc\xa\DmdbXAResource.class
 * Java compiler version: 2 (46.0)
 * JD-Core Version:       0.7.1
 */